package engines

import (
	"github.com/gin-gonic/gin"
	"reflect"
	"hub.hddznet.com/app/framework/tools"
	"github.com/chinahdkj/xorm"
)

// 保存gin引擎
var Gin *gin.Engine
// 保存xorm引擎
var Xorm *xorm.Engine
// 保存mongo引擎
var mgo interface{}

func RegistGin(g *gin.Engine) {
	Gin = g
}

func RegistXorm(g *xorm.Engine) {
	Xorm = g
}

func RegistMgo(g interface{}) {
	mgo = g
}
func MgoInterface() interface{} {
	return mgo
}
func Mgo(g interface{}) {
	if reflect.TypeOf(g).Kind() != reflect.Ptr || reflect.ValueOf(g).Pointer() == 0 {
		panic("输入的bean对象必须为一个指针值，并且不能是nil对象")
	}
	if tools.RftRealType(g).PkgPath() != tools.RftRealType(mgo).PkgPath() {
		panic("输入的对象与原对象不是同一个类型")
	}
	if reflect.TypeOf(mgo).Kind() == reflect.Ptr {
		reflect.ValueOf(g).Elem().Set(reflect.ValueOf(mgo).Elem())
		return
	} else {
		reflect.ValueOf(g).Elem().Set(reflect.ValueOf(mgo))
		return
	}
}
